/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Codigo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author kyerte
 */
public class ConsultaPromotor {

    private Connection conexion = null;
    private PreparedStatement consultarPromotor = null;
    private PreparedStatement insertarPromotor = null;
    private PreparedStatement actualizarPromotor = null;
    private PreparedStatement eliminarPromotor = null;
    private PreparedStatement obtenerIdPromotor = null;

    ConsultaPromotor() {

        conexion = FrmPrincipal.conexion;

        try {

            consultarPromotor = conexion.prepareStatement("SELECT * FROM Promotor");
            insertarPromotor = conexion.prepareStatement("INSERT INTO "
                    + "Promotor(Nombre) VALUES(?)");
            actualizarPromotor = conexion.prepareStatement("UPDATE Promotor "
                    + "SET Nombre=? WHERE idPromotor=?");
            eliminarPromotor = conexion.prepareStatement("DELETE FROM Promotor "
                    + "WHERE idPromotor=?");
            obtenerIdPromotor = conexion.prepareStatement("SELECT idPromotor FROM "
                    + "Promotor WHERE Nombre=?");

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }
    }

    public List<Promotor> consultarPromotor() {

        ResultSet conjuntoResultados = null;
        List<Promotor> resultadosPromotor = null;

        try {

            conjuntoResultados = consultarPromotor.executeQuery();
            resultadosPromotor = new ArrayList<Promotor>();

            while (conjuntoResultados.next()) {

                resultadosPromotor.add(new Promotor(
                        conjuntoResultados.getInt("idPromotor"),
                        conjuntoResultados.getString("Nombre")));

            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                conjuntoResultados.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return resultadosPromotor;
    }

    public int agregarNuevoPromotor(String nombre) {
        int resultado = 0;
        try {
            insertarPromotor.setString(1, nombre);
            resultado = insertarPromotor.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }
        return resultado;
    }

    public int actualizarPromotor(String nombre, int id) {
        int resultado = 0;

        try {

            actualizarPromotor.setString(1, nombre);
            actualizarPromotor.setInt(2, id);

            resultado = actualizarPromotor.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    public int eliminarPromotor(int id) {

        int resultado = 0;

        try {
            eliminarPromotor.setInt(1, id);
            resultado = eliminarPromotor.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }


        return resultado;

    }

    public int obtenerIdPromotor(String nombre) {

        ResultSet conjuntoResultados = null;
        int idPromotor = 0;

        try {

            obtenerIdPromotor.setString(1, nombre);
            conjuntoResultados = obtenerIdPromotor.executeQuery();

            while (conjuntoResultados.next()) {
                idPromotor = conjuntoResultados.getInt("idPromotor");
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                conjuntoResultados.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return idPromotor;
    }

    private void close() {
        try {
            conexion.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
